package com.dev.receiver;

import com.dev.utils.LogUtils;
import ohos.aafwk.ability.AbilitySlice;
import ohos.agp.window.dialog.ToastDialog;
import ohos.eventhandler.EventRunner;
import ohos.telephony.NetworkState;
import ohos.telephony.RadioStateObserver;
import ohos.telephony.SignalInformation;

import java.util.List;

/**
 * 创建继承RadioStateObserver的类MyRadioStateObserver
 */
public class MyRadioStateObserver extends RadioStateObserver {

    private AbilitySlice slice;

    // 构造方法，在当前线程的runner中执行回调，slotId需要传入要观察的卡槽ID（0或1）。
    MyRadioStateObserver(int slotId,AbilitySlice slice) {
        super(slotId);
        this.slice = slice;
    }

    // 构造方法，在执行runner中执行回调。
    public MyRadioStateObserver(int slotId, EventRunner runner, AbilitySlice slice) {
        super(slotId, runner);
        this.slice = slice;
    }

    // 网络注册状态变化的回调方法。
    @Override
    public void onNetworkStateUpdated(NetworkState state) {
        if (state.getNsaState() == NetworkState.NSA_STATE_CONNECTED_DETECT) {
            new ToastDialog(slice).setText("打开LTE网络").show();
            LogUtils.warn("NETWORK", "打开LTE网络");
        } else if (state.getNsaState() == NetworkState.REG_STATE_EMERGENCY_CALL_ONLY) {
            new ToastDialog(slice).setText("( 无网络 / 未知 ) 状态").show();
            LogUtils.warn("NETWORK", "( 无网络 / 未知 ) 状态");
        }
    }

    // 信号信息变化的回调方法。
    @Override
    public void onSignalInfoUpdated(List<SignalInformation> signalInfos) {

    }
}
